package com.itcast.yygh.user.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itcast.common.result.R;
import com.itcast.yygh.model.model.user.UserInfo;
import com.itcast.yygh.model.vo.user.UserInfoQueryVo;
import com.itcast.yygh.user.service.UserInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Map;

/**
 * 医疗后台管理系统用户列表
 */
@Api("用户后台管理")
@RestController
@RequestMapping("/admin/userinfo")
public class UserController {
    //引入依赖
    @Resource
    private UserInfoService userInfoService;

    //用户列表分页
    @PostMapping("/findPage/{page}/{limit}")
    public R findPage(@PathVariable Long page,
                      @PathVariable Long limit,
                      @RequestBody UserInfoQueryVo userInfoQueryVo){

        //1.封装分页需要的数据
        Page<UserInfo> pages = new Page<>(page,limit);
        //2.查询分页数据
        IPage<UserInfo> userInfoIPage =  userInfoService.findPage(pages,userInfoQueryVo);
        //返回查询的数据
        return R.ok().data("pageModel",userInfoIPage);
    }

    //用户数据锁定和解锁功能实现
    @ApiOperation("用户锁定/解锁功能")
    @GetMapping("/lock/{userId}/{status}")
    public R lock(
                @PathVariable("userId") Long userId,
                @PathVariable("status") int status){
        //调用service中的方法
        try{
            userInfoService.lock(userId,status);
            return R.ok();
        }catch (Exception e){
            e.printStackTrace();
            return R.error();
        }
    }
    //查询用户详情数据
    @ApiOperation("查询用户详情数据")
    @GetMapping("/show/{id}")
    public R show(@PathVariable Long id){
        //调用service的方法
        Map<String,Object> maps = userInfoService.show(id);
        return R.ok().data(maps);
    }
    //审核用户认证
    @ApiOperation("审核用户认证")
    @GetMapping("/approval/{id}/{authStatus}")
    public R approval(
                    @PathVariable("id") Long id,
                    @PathVariable("authStatus") int authStatus){
        try{
            userInfoService.approval(id,authStatus);
            return R.ok();
        }catch (Exception e){
            e.printStackTrace();
            return R.error();
        }
    }
}
